package com.jt.controller;

import jdk.nashorn.internal.ir.annotations.Reference;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * 基于日志对象进行日志打印
 * log对象在哪个类中创建就在getlogger里哪个类的clas
 */
@Slf4j //告诉spring底层Lombok会自动帮我们创建日志对象 不需要我们手动创建
@RefreshScope
@RestController
public class ProviderLogController {
   // private static Logger log = LoggerFactory.getLogger(ProviderLogController.class);
    @GetMapping("/provider/log/daLog01")
    public String daLog01(){//trace<debug<info<warn<error 只输出本身和比本身高级别的日志
        log.trace("===trace===");
        log.debug("===debug===");
        log.info("===info===");
        log.warn("===warn===");
        log.error("===error===");
        return "log config test...";
    }
    /**
     *logLevel在初始化配置的时候获取
     * 配置初始化是在本类对象创建的时候（该对象只创建一次，所以子啊配置中心修改配置不会影响到logLevel的值）
     * 解决方案 在该类上加注解@RefreshScope,作用是是对象创建与配置中心的修改同步
     */
    @Value("${logging.level.com.jt:error}")
    private String logLevel;
    @GetMapping("/provider/log/daLog02")
    public String daLog02(){
        log.debug("log level is {}",logLevel);//{}是占位符 把logLevel传进去
        return "log level is" + logLevel;
    }
}
